# Python 基础语法示例代码

# ========================
# 1. 变量与基本数据类型
# ========================

# 定义变量
integer_var = 42  # 整数
float_var = 3.14  # 浮点数
string_var = "Hello, Python!"  # 字符串
boolean_var = True  # 布尔值

# 输出变量值
print("整数:", integer_var)
print("浮点数:", float_var)
print("字符串:", string_var)
print("布尔值:", boolean_var)

# 数据类型转换
float_to_int = int(float_var)  # 浮点数转整数
int_to_string = str(integer_var)  # 整数转字符串
print("类型转换示例:", float_to_int, int_to_string)

# ========================
# 2. 数据结构：列表、元组、字典、集合
# ========================

# 列表 (List)
my_list = [1, 2, 3, 4, 5]  # 可变、有序
my_list.append(6)  # 添加元素
print("列表:", my_list)

# 元组 (Tuple)
my_tuple = (10, 20, 30)  # 不可变、有序
print("元组:", my_tuple)

# 字典 (Dictionary)
my_dict = {"name": "Alice", "age": 25}  # 键值对
my_dict["location"] = "Earth"  # 添加键值对
print("字典:", my_dict)

# 集合 (Set)
my_set = {1, 2, 3, 4}  # 无序、不重复
my_set.add(5)  # 添加元素
print("集合:", my_set)

# ========================
# 3. 条件语句
# ========================

# 条件判断
x = 10
if x > 5:
    print("x 大于 5")
elif x == 5:
    print("x 等于 5")
else:
    print("x 小于 5")

# ========================
# 4. 循环
# ========================

# for 循环
for i in range(5):  # 从 0 到 4（不包括 5）
    print("for 循环:", i)

# while 循环
count = 0
while count < 3:
    print("while 循环:", count)
    count += 1

# 两个list中元素成对输出
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

for x, y in zip(list1, list2):
    print(x, y)

# ========================
# 5. 函数
# ========================

# 定义函数
def greet(name):
    """这是一个简单的问候函数"""
    return f"Hello, {name}!"


# 调用函数
message = greet("Python")
print("函数调用:", message)


# ========================
# 6. 类与对象
# ========================

# 定义一个类
class Person:
    """表示一个人的类"""

    # 构造函数
    def __init__(self, name, age):
        self.name = name  # 实例变量
        self.age = age

    # 类的方法
    def introduce(self):
        return f"My name is {self.name} and I am {self.age} years old."


# 创建对象
person1 = Person("Alice", 25)
print("类与对象:", person1.introduce())

# ========================
# 7. 异常处理
# ========================

try:
    result = 10 / 0  # 可能引发异常的代码
except ZeroDivisionError as e:
    print("捕获异常: 除数不能为零:", e)
finally:
    print("异常处理结束")

# ========================
# 8. 文件操作
# ========================

# 写入文件
with open("example.txt", "w") as file:
    file.write("Hello, file handling in Python!")

# 读取文件
with open("example.txt", "r") as file:
    content = file.read()
    print("文件内容:", content)

# ========================
# 9. 模块与库
# ========================

# 导入模块
import math

# 使用模块中的函数
print("圆周率:", math.pi)
print("平方根:", math.sqrt(16))

# ========================
# 10. 列表推导式与生成器
# ========================

# 列表推导式
squares = [x ** 2 for x in range(5)]  # 创建一个列表，包含前 5 个数的平方
print("列表推导式:", squares)

# 生成器
generator = (x ** 2 for x in range(5))  # 创建一个生成器
print("生成器:", list(generator))  # 将生成器转换为列表


# ========================
# 11. 装饰器
# ========================

# 定义装饰器
def my_decorator(func):
    def wrapper():
        print("装饰器: 函数开始")
        func()
        print("装饰器: 函数结束")

    return wrapper


# 使用装饰器
@my_decorator
def say_hello():
    print("Hello from decorated function!")


say_hello()

# ========================
# 12. Lambda 表达式
# ========================

# 定义一个 Lambda 函数
add = lambda x, y: x + y  # 两个数相加
print("Lambda 函数:", add(3, 5))


# ========================
# 13. 面向迭代器与生成器的基础
# ========================

# 自定义生成器函数
def my_generator():
    """一个简单的生成器"""
    for i in range(3):
        yield i  # 使用 yield 关键字生成值


# 使用生成器
for value in my_generator():
    print("生成器值:", value)
